home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Gekkan Dennou Club 147
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan).7z
/
Gekkan Dennou Club - 2000.8 Vol. 147 (Japan) (Track 1).bin
/
tools
/
ivl
/
src
/
ivl_oi.c
< prev
next >
Wrap
Text File
|
2000-06-21
|
4KB
|
188 lines
/*
#define DEBUG
* ivl
*
* 各種情報のみの表示処理
*
* from Mar.13,2000 by dummy.x.(with J-SAGA INDUSTRY)
*/
#include <stdio.h>
#include "easymac.h"
#include "libpt4.h"
#include "ivl.h"
#include "mkpathfn.c"
/*
* ↓↓↓ アイコン情報のみ表示処理 ↓↓↓
*/
/* アイコン情報を表示する
* 引数: fnamp - ファイル名へのポインタ
* szstrp - サイズ文字列へのポインタ
* pathp - パス名へのポインタ
*/
#define print_icon_info(fnamp, szstrp, pathp) \
printf("%-22s %-7s %s\n", fnamp, szstrp, pathp)
/* 1ファイルぶんのアイコン情報を表示する
* 引数: flistp - 表示アイコンファイルの登録リストへのポインタ
*/
static
void print_one_info(const filelist_t *flistp)
{
int uke;
const char *szstrp;
pt4_struct_t phed;
char buf[5 + 1 + 5 + 1]; /* "???x???" ただし ??? は最大5桁*/
/* ファイルを読み込み/確認する */
uke = read_pt4_head(&phed, make_path_filename(flistp->pathp, &flistp->fbuf));
/* 読み込み/確認の結果に応じてサイズ文字列を取得 */
switch (uke) {
case RDPT4_SUCCESS: /* 無事読み込めた */
sprintf(buf, "%3hux%3hu", phed.width, phed.height);
szstrp = buf;
break;
default: /* その他 */
case RDPT4_READ_FAIL: /* ファイル読み込み失敗 */
szstrp = "read er";
break;
case RDPT4_MALLOC_FAIL: /* メモリ確保失敗 */
szstrp = "no mem";
break;
case RDPT4_ILL_FORMAT: /* .PT4 ではない */
szstrp = "not PT4";
break;
}
/* 表示 */
print_icon_info(flistp->fbuf.name, szstrp, flistp->pathp);
}
/* 表示の区切り行を生成する
* 引数: bufp - 生成先バッファアドレス(最低 96+1.b 必要)
*/
static
void make_kugiri_line(char *bufp)
{
memset(bufp, '-', 95); /* まず '-' で埋める */
bufp[22] = '+';
bufp[22+1+7] = '+';
bufp[95] = '\n';
bufp[96] = '\0';
}
/* 登録されている全てのアイコンの情報を表示する
* 返値: 無事に終了すれば 0、何か問題があったら !0
* 注記 * 今のところ、返値は必ず 0 になる。
*/
int print_all_icon_info(void)
{
const filelist_t *ftblp = arg_file_tblp;
const filelist_t *const ftblstop = ftblp + arg_file_kaz;
char buf[96 + 1];
/* ガイドライン表示 */
print_icon_info(" filename", " size", " path");
make_kugiri_line(buf);
printf(buf);
/* ファイル情報表示 */
do {
/* 画像表示 */
print_one_info(ftblp);
/* 次のファイルへ */
ftblp++;
} while (ftblp < ftblstop);
/* 締め表示 */
printf(buf);
return 0; /* 必ず正常終了 */
}
/*
* ↓↓↓ 表示可能画像サイズ表示処理 ↓↓↓
*/
/* アイコンサイズをファイルテーブルに設定する
* 引数: flistp - 表示アイコンファイルの登録リストへのポインタ
* 返値: 無事設定できたら 0、でなければ !0
*/
static
int set_one_size(filelist_t *flistp)
{
int result;
int w, h;
pt4_struct_t phed;
/* ファイルを読み込み/確認する */
result = read_pt4_head(&phed, make_path_filename(flistp->pathp, &flistp->fbuf));
/* 読み込み/確認の結果に応じてサイズを取得 */
if (result == RDPT4_SUCCESS) { /* 無事読み込めた */
w = phed.width;
h = phed.height;
} else { /* 何らかの問題が起きた */
w = h = -1;
}
/* 設定 */
flistp->wdots = w;
flistp->hdots = h;
return result;
}
/* テーブル中の各ファイルの画像サイズをテーブルに設定する
*/
static
void set_all_icon_size(void)
{
filelist_t *ftblp = arg_file_tblp;
filelist_t *const ftblstop = ftblp + arg_file_kaz;
printf_at_verbose(("size checking "));
/* 画像サイズ登録 */
do {
/* 画像表示 */
int uke = set_one_size(ftblp);
printf_at_verbose(((uke)? "x": "."));
/* 次のファイルへ */
ftblp++;
} while (ftblp < ftblstop);
printf_at_verbose(("\n"));
}
/* 現在の設定で表示可能な画像サイズ/画像個数を表示する
* 返値: 無事に終了すれば 0、何か問題があったら !0
* 注記 * 今のところ、返値は必ず 0 になる。
*/
int print_pageview_data(void)
{
/* 最大サイズから算出するように指示されてたら
* 各ファイルの画像サイズをテーブルに登録しておく
*/
#define FBITMSK_ZX_OPT (biton(FBIT_PAGE_BY_SIZE) | biton(FBIT_BYSZ_FINDMX))
if ((state_flag_bits & FBITMSK_ZX_OPT) == FBITMSK_ZX_OPT) {
set_all_icon_size();
}
init_view_info(); /* 画像表示範囲などを設定 */
/* 結果を表示 */
ttlprintf("この指定では、横%2d×縦%2d個・横%2d×縦%2ddotを表示できます。\n"
, pat_on_line, pat_line_kaz, pat_disp_area_w, pat_disp_area_gh);
return 0; /* 必ず正常終了 */
}